package cn.com.jrr.core.dao;


import java.io.Serializable;
import java.util.List;

import org.hibernate.Session;

import cn.com.jrr.core.model.DataTableResponse;
import cn.com.jrr.core.model.PageModel;

public interface BaseDao<T> {
    public Session getDefaultSession();
    /**HQL*/
    /**HQL保存*/
    public Serializable saveO(T o);
    /**HQL删除*/
    public void deleteObj(T o);
    /**HQL修改*/
    public void updateObj(T o);
    /**保存*/
    public void saveOrUpdateObj(T o);
    /**HQL 获得单个*/
    public T getObj(Class<T> c, Serializable id);
    /**HQL保存*/
    public T get(String hql, Object... params);
    /**HQL 查询*/
    public List<T> find(String hql, Object... params);
    /**HQL 分页查询*/
    public List<T> find(String hql, int page, int rows,Object... params);
    /**HQL 分页查询并分装为DataTableResponse*/
    public DataTableResponse<T> find(String hql, PageModel<T> pageModel,Object... params);
    /**HQL 查询条数*/
    public Long count(String hql, Object... params);



    /**SQL*/
    /**SQL 执行insert update delete*/
    public int updateBySql(String sql,Object... params);
    /**SQL 分页查询*/
    public DataTableResponse<T> findBySql(String sql,PageModel<T> pageModel,Class<T> c,Object... params);
    /**SQL 普通查询(转为相应的模型)*/
    public List<T> findBySql(String sql,Class<T> c,Object... params);
    /**SQL 普通查询*/
    public List<Object> findBySql(String sql,Object... params);
    /**SQL 查询条数*/
    public int countBySql(String sql,Object... params);
    /**HQL 插入*/
    public void addByHql(T o);
    /**HQL 修改*/
    public void updateByHql(T o);


}
